home *** CD-ROM | disk | FTP | other *** search
/ Floppyshop 2 / Floppyshop - 2.zip / Floppyshop - 2.iso / art&graf.ix / art-0015 / flicker / filereq.c < prev    next >
C/C++ Source or Header  |  1997-04-16  |  2KB  |  112 lines

  1.  
  2. #include <osbind.h>
  3. #include "flicker.h"
  4.  
  5. extern WORD gem_mrez;
  6.  
  7. static char wild_buf[75];
  8. static char fold_buf[70];
  9. static char tbuf[16];
  10. static char title_buf[16] = "FLICKER";
  11. static char path_buf[90];
  12. WORD current_drive;
  13. static char current_dir[68];    /*64 in the docs, I'm just paranoid */
  14.  
  15. extern char *make_file_name();
  16.  
  17. init_fname()
  18. {
  19. current_drive = Dgetdrv();
  20. Dgetpath(current_dir, 0);
  21. fold_buf[0] = current_drive + 'A';
  22. fold_buf[1] = ':';
  23. strcat(fold_buf, current_dir);
  24. strcat(fold_buf, "\\");
  25. }
  26.  
  27. static
  28. get_folder(wildbuf, foldbuf)
  29. char *wildbuf, *foldbuf;
  30. {
  31. register char c;
  32. register char lastc = 0;
  33. register char *wild, *fold;
  34.  
  35. wild = wildbuf;
  36. fold = foldbuf;
  37. for (;;)
  38.     {
  39.     c = *wild++;
  40.     switch (c)
  41.         {
  42.         case '*':
  43.             for (;;)
  44.                 {
  45.                 if (fold == foldbuf)
  46.                     {
  47.                     *fold = 0;
  48.                     return;
  49.                     }
  50.                 c = *(--fold);
  51.                 switch(c)
  52.                     {
  53.                     case '\\':
  54.                     case ':':
  55.                         fold++;
  56.                         *fold = 0;
  57.                         return;
  58.                     }
  59.                 }
  60.             break;
  61.         case 0:
  62.             if (lastc != ':' && lastc != '\\' && lastc != 0)
  63.                 *fold++ = '\\';
  64.             *fold++ = 0;
  65.             return;
  66.         default:
  67.             *fold++ = c;
  68.         }
  69.     lastc = c;
  70.     }
  71. }
  72.  
  73. static
  74. get_title(s, d)
  75. char *s;
  76. register char *d;
  77. {
  78. register char c;
  79.  
  80. strcpy(d, s);
  81. for (;;)
  82.     {
  83.     if ( (c = *d++) == 0)
  84.         break;
  85.     if (c == '.')
  86.         {
  87.         *(--d) = 0;
  88.         break;
  89.         }
  90.     }
  91. return;
  92. }
  93.  
  94.  
  95. char *
  96. get_fname(suff)
  97. char *suff;
  98. {
  99. WORD fs_ireturn, fs_iexbutton;
  100.  
  101. sprintf(wild_buf, "%s*.%s", fold_buf, suff);
  102. sprintf(tbuf,"%s.%s", title_buf, suff);
  103. fs_ireturn = fsel_input(wild_buf, tbuf, &fs_iexbutton);
  104. if (fs_ireturn == 0 || fs_iexbutton == 0)
  105.     return(NULL);
  106. get_folder(wild_buf, fold_buf);    /* update folder with user things */
  107. get_title(tbuf, title_buf);    /* update the "non-suffix" part */
  108. strcpy(path_buf, fold_buf);
  109. strcat(path_buf, tbuf);
  110. }
  111.  
  112.